Skip to content

Conversation

@gimlichael
Copy link
Member

@gimlichael gimlichael commented Nov 13, 2025

This pull request is a major update that shifts the project to target .NET 10 (LTS), removes support for .NET 8, and upgrades dependencies and tooling across the codebase. It also updates documentation and CI/CD workflow configurations to align with the new platform support and package versions.

Platform and Framework Updates:

  • Changed target frameworks for all projects and tests to net10.0 and net9.0, removing support for net8.0 (Directory.Build.props, .docfx/docfx.json) [1] [2] [3].
  • Updated documentation and release notes to reflect .NET 10 support and the removal of .NET 8 (.nuget/Codebelt.Extensions.Asp.Versioning/PackageReleaseNotes.txt, .docfx/includes/availability-default.md, .docfx/includes/availability-modern.md, [1] [2] [3] [4].

Dependency and Package Upgrades:

  • Upgraded all major dependencies to their latest compatible versions for .NET 10, including Cuemon, Codebelt, and xUnit v3 (Directory.Packages.props, Directory.Build.props) [1] [2].
  • Updated Dockerfile and DocFx tooling to newer versions (.docfx/Dockerfile.docfx).

CI/CD and Workflow Improvements:

  • Updated GitHub workflow jobs to use v3 of reusable workflows and improved build/test steps for xUnit v3 compatibility (.github/workflows/pipelines.yml) [1] [2] [3].
  • Upgraded NuGet push workflow to v2 and commented out CodeQL job for future v3 adoption.

Codebase Cleanup:

  • Removed legacy code and conditional compilation for .NET 6 and .NET 8, including the RestfulProblemDetailsFactory and related service registration logic (src/Codebelt.Extensions.Asp.Versioning/RestfulProblemDetailsFactory.cs, src/Codebelt.Extensions.Asp.Versioning/ServiceCollectionExtensions.cs) [1] [2] [3] [4].
  • Simplified test files by removing obsolete references and conditional blocks (test/Codebelt.Extensions.Asp.Versioning.Tests/ApiVersionReaderTest.cs, test/Codebelt.Extensions.Asp.Versioning.Tests/ProblemDetailsFactoryTest.cs, test/Codebelt.Extensions.Asp.Versioning.Tests/RestfulApiVersioningOptionsTest.cs) [1] [2] [3] [4] [5].

Documentation Enhancements:

  • Expanded README and documentation to clarify platform support and provide updated guidance for users (README.md, .nuget/Codebelt.Extensions.Asp.Versioning/README.md) [1] [2].

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23]

Summary by CodeRabbit

Release Notes

  • New Features

    • Added support for .NET 10; discontinued support for .NET 8.
  • Documentation

    • Updated all documentation to reflect current supported .NET versions.
    • Enhanced README with project information and package overview.
  • Chores

    • Updated package dependencies to compatible versions.

@gimlichael gimlichael requested a review from Copilot November 13, 2025 20:18
@gimlichael gimlichael self-assigned this Nov 13, 2025
@coderabbitai
Copy link

coderabbitai bot commented Nov 13, 2025

Walkthrough

This PR upgrades the project to target .NET 10 and .NET 9, replacing .NET 8 support. Changes include framework target updates, Docker and CI/CD pipeline configuration updates, package dependency version bumps, test framework migration to xunit.v3, removal of conditional compilation guards, and documentation updates reflecting new .NET version support.

Changes

Cohort / File(s) Summary
Framework & Build Configuration
Directory.Build.props, Directory.Packages.props, .docfx/docfx.json
Updated target frameworks from net9.0;net8.0 to net10.0;net9.0 for both production and test projects; added OutputType and UseMicrosoftTestingPlatformRunner for test projects; migrated xunit to xunit.v3; updated 10+ package versions including test and utility libraries.
Documentation & Release Notes
.docfx/includes/availability-*.md, .nuget/Codebelt.Extensions.Asp.Versioning/PackageReleaseNotes.txt, .nuget/Codebelt.Extensions.Asp.Versioning/README.md, README.md, CHANGELOG.md
Updated availability references from .NET 9, 8 to .NET 10, 9; bumped package version to 10.0.0; added marketing tagline; added About, Documentation, and Standalone Packages sections to README; added changelog entry for version 10.0.0.
Infrastructure & CI/CD
.docfx/Dockerfile.docfx, .github/workflows/pipelines.yml, testenvironments.json
Updated NGINX from 1.29.1-alpine to 1.29.3-alpine; upgraded docfx image to 2.78.4; updated GitHub Actions from v2 to v3, updated deploy action from v1 to v2; deprecated CodeQL job; added xunitv3 build requirement; updated Docker image to include .NET 10.0.100.
Source Code
src/Codebelt.Extensions.Asp.Versioning/RestfulProblemDetailsFactory.cs (deleted), src/Codebelt.Extensions.Asp.Versioning/ServiceCollectionExtensions.cs
Removed RestfulProblemDetailsFactory class and related NET6_0 guard; removed conditional guards around Cuemon.AspNetCore.Http using directive and IProblemDetailsFactory replacement logic; made problem-details setup unconditional.
Test Code
test/Codebelt.Extensions.Asp.Versioning.Tests/ApiVersionReaderTest.cs, test/Codebelt.Extensions.Asp.Versioning.Tests/ProblemDetailsFactoryTest.cs, test/Codebelt.Extensions.Asp.Versioning.Tests/RestfulApiVersioningOptionsTest.cs
Removed unused Xunit.Abstractions using directives; removed NET8_0_OR_GREATER and NET9_0 preprocessor guards; unified test expectations to single NET9_0+ style format; simplified control flow by eliminating platform-specific branches.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

  • RestfulProblemDetailsFactory deletion: Verify removal doesn't break downstream code or public API contracts; confirm no references remain.
  • ServiceCollectionExtensions.cs conditional guard removal: Ensure removed NET6_0 and NET8_0_OR_GREATER guards don't break compatibility for edge cases where problem-details factory or Cuemon.AspNetCore.Http are conditionally used.
  • ProblemDetailsFactoryTest.cs preprocessor removal: Confirm unified test expectation (NET9_0+ format) remains valid across all target frameworks; verify xunit.v3 compatibility with removed test setup.
  • Package version compatibility: Validate all 10+ dependency bumps are mutually compatible with .NET 10 and don't introduce breaking changes; confirm xunit.v3 and xunit.v3.runner.console versions work with the test infrastructure.
  • Test framework migration: Verify xunit.v3 migration doesn't alter test discovery, execution, or output format expectations.

Possibly related PRs

  • V9.0.4/service update #13: Similar dependency and image version bumps across shared configuration files (.docfx/Dockerfile.docfx, .github/workflows/pipelines.yml, Directory.Packages.props, testenvironments.json).
  • V9.0.7/service update #16: Overlapping package version updates (Directory.Packages.props) and Docker image configuration changes with NGINX version bumps.
  • V9.0.0/net9rc1 support #3: Shares framework target updates, CI workflow modifications, test expectations around ProblemDetails, and project file changes.

Poem

🐰 From Eight to Nine, then Ten we climb,
NGINX hops and xunit chimes,
Guards removed, control flows clear,
LTS futures, year by year,
A modern .NET frontier! 🚀

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 25.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Title check ❓ Inconclusive The title 'V10.0.0/launch' refers to the branch name but does not clearly describe the actual changes or main objectives of the PR in a meaningful way. Consider using a more descriptive title that conveys the main change, such as 'Upgrade to .NET 10 LTS and modernize tooling/dependencies' or 'Release v10.0.0: Add .NET 10 support and remove .NET 8'.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
  • 📝 Docstrings were successfully generated.
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch v10.0.0/launch

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copilot finished reviewing on behalf of gimlichael November 13, 2025 20:19
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This pull request upgrades the project to target .NET 10 (LTS), removes support for .NET 8, and modernizes dependencies and tooling across the codebase.

  • Updates all target frameworks from net8.0 to net10.0 while retaining net9.0 support
  • Upgrades dependencies to their latest compatible versions, including migration to xUnit v3
  • Removes legacy .NET 6 and .NET 8 conditional compilation code

Reviewed Changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
Directory.Build.props Updated target frameworks to net10.0/net9.0 and added xUnit v3 test runner configuration
Directory.Packages.props Upgraded all package versions to net10.0-compatible releases
testenvironments.json Updated Docker test runner image to include .NET 10 SDK
ServiceCollectionExtensions.cs Removed NET6.0 and NET8.0_OR_GREATER conditional compilation directives
RestfulProblemDetailsFactory.cs Deleted legacy NET6.0-only implementation file
Test files Removed unused imports and NET8.0 conditional compilation blocks
Documentation files Updated platform support references from .NET 8 to .NET 10
.github/workflows/pipelines.yml Updated workflow job versions to v3 and added xUnit v3 build requirement
.docfx files Updated DocFx tooling and target framework references

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@codecov
Copy link

codecov bot commented Nov 13, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 89.69%. Comparing base (4a6bb58) to head (a6d3793).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #18   +/-   ##
=======================================
  Coverage   89.69%   89.69%           
=======================================
  Files           4        4           
  Lines          97       97           
  Branches        9        9           
=======================================
  Hits           87       87           
  Misses         10       10           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@sonarqubecloud
Copy link

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4a6bb58 and a6d3793.

📒 Files selected for processing (17)
  • .docfx/Dockerfile.docfx (1 hunks)
  • .docfx/docfx.json (1 hunks)
  • .docfx/includes/availability-default.md (1 hunks)
  • .docfx/includes/availability-modern.md (1 hunks)
  • .github/workflows/pipelines.yml (4 hunks)
  • .nuget/Codebelt.Extensions.Asp.Versioning/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Codebelt.Extensions.Asp.Versioning/README.md (1 hunks)
  • CHANGELOG.md (1 hunks)
  • Directory.Build.props (3 hunks)
  • Directory.Packages.props (1 hunks)
  • README.md (1 hunks)
  • src/Codebelt.Extensions.Asp.Versioning/RestfulProblemDetailsFactory.cs (0 hunks)
  • src/Codebelt.Extensions.Asp.Versioning/ServiceCollectionExtensions.cs (1 hunks)
  • test/Codebelt.Extensions.Asp.Versioning.Tests/ApiVersionReaderTest.cs (0 hunks)
  • test/Codebelt.Extensions.Asp.Versioning.Tests/ProblemDetailsFactoryTest.cs (1 hunks)
  • test/Codebelt.Extensions.Asp.Versioning.Tests/RestfulApiVersioningOptionsTest.cs (0 hunks)
  • testenvironments.json (1 hunks)
💤 Files with no reviewable changes (3)
  • test/Codebelt.Extensions.Asp.Versioning.Tests/ApiVersionReaderTest.cs
  • src/Codebelt.Extensions.Asp.Versioning/RestfulProblemDetailsFactory.cs
  • test/Codebelt.Extensions.Asp.Versioning.Tests/RestfulApiVersioningOptionsTest.cs
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
README.md

7-7: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (7)
  • GitHub Check: call-test (windows-2022, Release) / 🧪 Test
  • GitHub Check: call-test (ubuntu-24.04, Debug) / 🧪 Test
  • GitHub Check: call-test (windows-2022, Debug) / 🧪 Test
  • GitHub Check: call-test (ubuntu-24.04, Release) / 🧪 Test
  • GitHub Check: call-pack (Release) / 📦 Pack
  • GitHub Check: call-pack (Debug) / 📦 Pack
  • GitHub Check: CodeQL analysis (csharp)
🔇 Additional comments (18)
src/Codebelt.Extensions.Asp.Versioning/ServiceCollectionExtensions.cs (1)

60-60: Whitespace-only change; behavior unchanged

This hunk is purely spacing between the problem-details configuration and the return statement; there is no functional impact, and the surrounding configuration remains consistent.

test/Codebelt.Extensions.Asp.Versioning.Tests/ProblemDetailsFactoryTest.cs (1)

59-59: Layout tweak only; tests remain equivalent

The added blank line is a cosmetic change that slightly improves readability without affecting assertions or test behavior.

.nuget/Codebelt.Extensions.Asp.Versioning/README.md (1)

5-6: Approved. The tagline appropriately highlights .NET 9 and .NET 10 support and integrates well with the document structure.

.docfx/docfx.json (1)

15-15: Approved. TargetFramework update to net10.0 is consistent with the repository's migration to .NET 10.

.docfx/includes/availability-modern.md (1)

1-1: Approved. Availability documentation appropriately reflects .NET 10 and .NET 9 support.

CHANGELOG.md (1)

10-14: Approved. The 10.0.0 changelog entry clearly communicates the major version bump, the .NET 10 adoption, and provides appropriate context about the project's versioning strategy.

.docfx/includes/availability-default.md (1)

1-1: Approved. Availability documentation correctly reflects .NET 10, .NET 9, and .NET Standard 2.0 support.

.nuget/Codebelt.Extensions.Asp.Versioning/PackageReleaseNotes.txt (1)

1-8: Approved. Version 10.0.0 release notes clearly document .NET 10 support addition, .NET 8 removal, and dependency upgrades. Format is consistent with prior entries.

.docfx/Dockerfile.docfx (1)

1-1: Verification complete — both base image versions are available.

Both nginx:1.29.3-alpine and codebeltnet/docfx:2.78.4 exist in their respective Docker registries and can be safely used.

testenvironments.json (1)

12-12: Docker image verified and available. The custom test runner image gimlichael/ubuntu-testrunner:net8.0.416-9.0.307-10.0.100 is built, published on Docker Hub, and actively maintained. It was last pushed on 2025-11-11 and has recent pull activity, confirming it is accessible for CI/CD use.

Directory.Build.props (3)

18-18: LGTM: Framework targets correctly updated.

The migration from net9.0;net8.0 to net10.0;net9.0 aligns with the PR objectives to adopt .NET 10 and remove .NET 8 support.


50-66: LGTM: xUnit v3 configuration correctly implemented.

The test project configuration properly includes:

  • Updated framework targets to net10.0;net9.0
  • OutputType=Exe (required for xUnit v3)
  • UseMicrosoftTestingPlatformRunner=true (required for xUnit v3)

These settings are necessary for the xUnit v3 migration.


68-85: LGTM: Test package references updated for xUnit v3.

The package references correctly include xunit.v3 and xunit.v3.runner.console for the xUnit v3 migration, while maintaining other test infrastructure packages (coverage, Visual Studio runner).

.github/workflows/pipelines.yml (4)

30-30: LGTM: Workflow actions upgraded to v3.

The build, pack, test, and sonarcloud jobs have been consistently upgraded to use v3 reusable workflows, aligning with the PR's CI/CD modernization objectives.

Also applies to: 44-44, 57-57, 68-68


63-63: LGTM: Build step correctly enabled for xUnit v3.

The explicit build: true configuration is required for xUnit v3 compatibility. The inline comment provides helpful context for future maintainers.


83-94: LGTM: CodeQL temporarily disabled and deploy workflow updated.

The changes appropriately:

  • Comment out the CodeQL job (aligns with PR objective "pending v3 adoption")
  • Remove codeql from the deploy dependencies
  • Upgrade the nuget-push workflow to v2

78-78: No action required—codecov workflow v3 does not exist.

The only released version of the codecov workflow is v1, so the current pin to v1 is appropriate. The code is correct as-is.

Likely an incorrect or invalid review comment.

Directory.Packages.props (1)

10-17: All package versions verified as .NET 10 compatible.

Microsoft.NET.Test.Sdk 18.0.1 lists net10.0 as a computed compatible TFM. xunit v3 (3.1.0 and 3.2.0) includes net10.0 support. Codebelt and Cuemon packages have .NET 10 support with net10.0 compatibility. All specified package versions exist on NuGet and are compatible with .NET 10.

@coderabbitai
Copy link

coderabbitai bot commented Nov 13, 2025

Note

Docstrings generation - SUCCESS
Generated docstrings for this pull request at #19

coderabbitai bot added a commit that referenced this pull request Nov 13, 2025
Docstrings generation was requested by @gimlichael.

* #18 (comment)

The following files were modified:

* `src/Codebelt.Extensions.Asp.Versioning/ServiceCollectionExtensions.cs`
@gimlichael gimlichael merged commit 71abc6f into main Nov 13, 2025
21 checks passed
@gimlichael gimlichael deleted the v10.0.0/launch branch November 13, 2025 20:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants